package com.run2code.starter.lock;


/**
 * 分布式锁接口
 * 关注公众号【奔跑的码畜】，一起进步不迷路
 *
 * @author 第七人格
 * @date 2024/06/17
 */
public interface DistributedLock {
    /**
     * 根据key加锁，默认锁的过期时间是30秒
     *
     * @param key 加锁key
     * @return boolean
     */
    boolean lock(String key);

    /**
     *  根据key加锁，并且设置等待时间和锁的过期时间
     *
     * @param key 加锁key
     * @param waitTime 等待时间
     * @param leaseTime 过期时间
     * @return boolean
     */
    boolean lock(String key, int waitTime, int leaseTime);

    /**
     * 根据key释放锁
     *
     * @param key 加锁key
     */
    void unlock(String key);
}
